package com.eduagent.xwqeduagent.api.CreativePosterGeneration.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 创意海报生成任务请求类
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CreatePosterTaskRequest implements Serializable {

    /**
     * 模型名称
     */
    private String model = "wanx-poster-generation-v1";

    /**
     * 输入参数
     */
    private Input input;

    /**
     * 处理参数
     */
    private Parameters parameters = new Parameters();

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Input implements Serializable {
        /**
         * 主标题，最多30个字符
         */
        private String title;

        /**
         * 副标题，最多30个字符
         */
        @JsonProperty("sub_title")
        private String subTitle;

        /**
         * 正文，最多50个字符
         */
        @JsonProperty("body_text")
        private String bodyText;

        /**
         * 中文提示词，与英文提示词至少设置一个，两个字段加起来最多50个字/单词
         */
        @JsonProperty("prompt_text_zh")
        private String promptTextZh;

        /**
         * 英文提示词，与中文提示词至少设置一个，两个字段加起来最多50个字/单词
         */
        @JsonProperty("prompt_text_en")
        private String promptTextEn;

        /**
         * 生成海报的版式，"横版"或"竖版"，默认为"横版"
         */
        @JsonProperty("wh_ratios")
        private String whRatios = "横版";

        /**
         * 海报风格名称
         */
        @JsonProperty("lora_name")
        private String loraName;

        /**
         * 海报风格权重，取值范围：[0, 1]，默认值为0.8
         */
        @JsonProperty("lora_weight")
        private Float loraWeight = 0.8f;

        /**
         * 留白效果权重，取值范围：[0, 1]，默认值为0.7
         */
        @JsonProperty("ctrl_ratio")
        private Float ctrlRatio = 0.7f;

        /**
         * 留白步数比例，取值范围：(0, 1]，默认值为0.7
         */
        @JsonProperty("ctrl_step")
        private Float ctrlStep = 0.7f;

        /**
         * 海报生成模式
         * generate：默认模式
         * sr：高分辨率模式
         * hrf：高清修复模式
         */
        @JsonProperty("generate_mode")
        private String generateMode = "generate";

        /**
         * 生成的海报数，取值范围：[1,4]，默认为1
         * 该参数只在generate_mode=generate时有效
         */
        @JsonProperty("generate_num")
        private Integer generateNum = 1;

        /**
         * 当generate_mode为"sr"或"hrf"时为必选项
         * 需要提升分辨率或者高清修复的海报图片对应的辅助参数
         */
        @JsonProperty("auxiliary_parameters")
        private String auxiliaryParameters;

        /**
         * 标题是否启用创意排版，默认为false
         */
        @JsonProperty("creative_title_layout")
        private Boolean creativeTitleLayout = false;
    }

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Parameters implements Serializable {
        // 目前为空对象，但保留类以便将来扩展
    }
} 